package com.lsht.system.service.impl.siwei;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author zyc
 * @date 2024/12/24 11:04
 */
public class InspectionRecordGenerator {

    // 当前日期的格式
    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");

    // 用于存储当前三位数编号（每天从1开始）
    private static final AtomicInteger counter = new AtomicInteger(1);

    // 获取当前日期的编码（例如：20241211+001）
    public static String generateInspectionCode() {
        // 获取当前日期
        String currentDate = LocalDate.now().format(DATE_FORMATTER);

        // 获取当前三位数编号
        int currentCount = counter.getAndIncrement();

        // 如果编号大于999，表示今天已经用完了编号，重置为1
        if (currentCount > 999) {
            counter.set(1);
            currentCount = 1;
        }

        // 格式化为三位数
        String formattedCount = String.format("%03d", currentCount);

        // 返回完整的巡检记录编号
        return currentDate + formattedCount;
    }

    // 每天0点重置三位数编号
    public static void resetCounterAtMidnight() {
        // 获取当前日期
        String currentDate = LocalDate.now().format(DATE_FORMATTER);

        // 获取昨天的日期
        String yesterdayDate = LocalDate.now().minusDays(1).format(DATE_FORMATTER);

        // 比较日期，若日期变化则重置编号
        if (!currentDate.equals(yesterdayDate)) {
            counter.set(1); // 重置编号为1
        }
    }
}
